﻿ 
namespace Core.Items.Modules
{
    /*

		MetaGroup                      = NexusModules
		Group                          = Armor
		Module                         = paternis armor nexus module prototype
		CpuUsage                       = 84.00 TF
		ReactorUsage                   = 34.00 RP
		Type                           = Active
		Slot                           = Head
		TechnologicalLevel             = T3P
		Mass                           = 7.50 kg
		PackedVolume                   = 0.10 U
		Volume                         = 0.20 U
		AccumulatorConsumption         = 32.00 AP
		CycleTime                      = 10.00 sec
		ArmorModification              = 5.00 %
		DefaultEffectRadius            = 100.00 m
		EffectRangeModification        = 120.00 %
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;
    
    /// <summary>
    /// Paternis armor NEXUS module prototype module class
    /// </summary>
    /// <remarks>File generated on 31/10/2011 16:00:55</remarks>
    public sealed class PaternisArmorNexusModulePrototype : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="PaternisArmorNexusModulePrototype"/> class.
        /// </summary>
        public PaternisArmorNexusModulePrototype()
            : base(
            "Paternis armor NEXUS module prototype",
            "",
            ModuleMetaGroupsEnum.NexusModules,
            ModuleGroupsEnum.NexusModuleArmor,
            TechnologyLevelsEnum.Level3|TechnologyLevelsEnum.Prototype,
            SizesEnum.Small,
            new LazyFeature[] { 
				new LazyFeature(typeof(CpuUsage<double>),84.00),
				new LazyFeature(typeof(ReactorUsage<double>),34.00),
				new LazyFeature(typeof(ModuleMass<double>),7.50),
				new LazyFeature(typeof(AccumulatorUsage<double>),32.00),
				new LazyFeature(typeof(NexusModuleCycleTime<double>),10.00),
				new LazyFeature(typeof(NexusModuleEffectRadius<double>),100.00),
				new LazyFeature(typeof(NexusModuleEffectRangeModification<double>),1.2),
				new LazyFeature(typeof(NexusModuleArmorModification<double>),0.05), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 7.50 ){ IsVisible = false },
                new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.ArmorAmount, 0.05){ IsVisible = false, ActivationState = ModuleActivationTypesEnum.Active, Unit = UnitsEnum.Percentage, DisplayName = "Armor Amount"  },})
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Active; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Head; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Modules; }
        }
    }
}